package org.edu.modules.oa.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.edu.modules.oa.entity.VeOaCarInfoEntity;
import org.edu.modules.oa.entity.VeOaCarWeihuEntity;
import org.edu.modules.oa.entity.VeOaCarWeizhangShiguEntity;
import org.edu.modules.oa.mapper.IVeOaCarInfoMapper;
import org.edu.modules.oa.mapper.IVeOaCarWeiHuMapper;
import org.edu.modules.oa.service.IVeOaCarWeihuService;
import org.edu.modules.oa.vo.VeOaCarWeihuVo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;

@Service
public class VeOaCarWeihuImpl extends ServiceImpl<IVeOaCarWeiHuMapper,VeOaCarWeihuEntity> implements IVeOaCarWeihuService {

    @Resource
    private IVeOaCarWeiHuMapper iVeOaCarWeiHuMapper;
    @Resource
    private IVeOaCarInfoMapper iVeOaCarInfoMapper;
    @Override
    public HashMap<String, Object> showWeiHuTable(Integer page, Integer pageSize, VeOaCarWeihuEntity veOaCarWeihuEntity) {
        HashMap<String,Object>map = new HashMap<>();
        //创建分页的page
        IPage<VeOaCarWeihuEntity>weiHuPage = new Page<>(page,pageSize);
        //创建查询的条件
        QueryWrapper<VeOaCarWeihuEntity>wrapper = new QueryWrapper<>();
        //前台传来的条件
        if(veOaCarWeihuEntity.getCarName()!=null && veOaCarWeihuEntity.getCarName()!=""){
            wrapper.like("car_name",veOaCarWeihuEntity.getCarName().trim());
        }
        if(veOaCarWeihuEntity.getJingbanUser()!=null && veOaCarWeihuEntity.getJingbanUser()!=""){

            wrapper.like("jingban_user",veOaCarWeihuEntity.getJingbanUser().trim());
        }
        if(veOaCarWeihuEntity.getWeihuType()!=null && veOaCarWeihuEntity.getWeihuType()!=""){
            wrapper.like("weihu_type",veOaCarWeihuEntity.getWeihuType().trim());
        }
        if(veOaCarWeihuEntity.getCarId()!=null && veOaCarWeihuEntity.getCarId()!=0){
            wrapper.eq("car_id",veOaCarWeihuEntity.getCarId());
        }
        if(veOaCarWeihuEntity.getWeihuDate()!=null){
            Date date = veOaCarWeihuEntity.getWeihuDate();
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            calendar.add(calendar.DATE,1); //把日期往后增加一天,整数  往后推,负数往前移动
            Date nextDay=calendar.getTime(); //这个时间就是日期往后推一天的结果
            wrapper.between("weihu_date",date,nextDay);
        }
        //倒序
        wrapper.orderByDesc("weihu_date");
        weiHuPage = iVeOaCarWeiHuMapper.selectPage(weiHuPage,wrapper);
        List<VeOaCarWeihuEntity>list = weiHuPage.getRecords();
        int count = iVeOaCarWeiHuMapper.selectCount(wrapper);
        // 把查出来的东西存到map里面去
        map.put("list",list);
        map.put("count",count);
        return map;

    }

    @Override
    //添加维护记录
    public int addWeihu(VeOaCarWeihuEntity veOaCarWeihuEntity) {
        int res = iVeOaCarWeiHuMapper.insert(veOaCarWeihuEntity);
        return res;
    }

    @Override
    //删除单条 多条
    public int deletById(Integer id) {
        int res = iVeOaCarWeiHuMapper.deleteById(id);
        return res;
    }

    @Override
    //导出
    public List<VeOaCarWeihuVo> export(VeOaCarWeihuEntity veOaCarWeihuEntity) {
        //创建查询的条件
        QueryWrapper<VeOaCarWeihuEntity>wrapper = new QueryWrapper<>();
        if(veOaCarWeihuEntity.getCarId()!=null&&veOaCarWeihuEntity.getCarId()!=0){
            wrapper.eq("car_id",veOaCarWeihuEntity.getCarId());
        }

        //查数据库，获取所有数据的集合
        List<VeOaCarWeihuEntity>list = iVeOaCarWeiHuMapper.selectList(wrapper);
        //集合a是导出Excle的集合用的
        List<VeOaCarWeihuVo>a = new ArrayList<>();
        for(VeOaCarWeihuEntity v : list){
            VeOaCarWeihuVo veOaCarWeihuVo = new VeOaCarWeihuVo();
            veOaCarWeihuVo.setCarName(v.getCarName());
            //时间类型转换成字符串
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            veOaCarWeihuVo.setWeihuDate(formatter.format(v.getWeihuDate()));
            veOaCarWeihuVo.setWeihuType(v.getWeihuType());
            veOaCarWeihuVo.setJingbanUser(v.getJingbanUser());
            veOaCarWeihuVo.setWeihuFeiyong(v.getWeihuFeiyong());
            veOaCarWeihuVo.setWeihuContent(v.getWeihuContent());
            veOaCarWeihuVo.setBackInfo(v.getBackInfo());
//            veOaCarWeihuVo.setCreateBy(v.getCreateBy());
//            veOaCarWeihuVo.setCreateByName(v.getCreateByName());
//            veOaCarWeihuVo.setCreateTime(formatter.format(v.getCreateTime()));
//            veOaCarWeihuVo.setUpdateBy(v.getUpdateBy());
//            veOaCarWeihuVo.setUpdateByName(v.getUpdateByName());
//            veOaCarWeihuVo.setUpdateTime(formatter.format(v.getUpdateTime()));
            a.add(veOaCarWeihuVo);
        }
        return a;
    }

    @Override
    //查看导入信息数据有没有该车辆
    public VeOaCarInfoEntity selectCarId(String carName) {
        QueryWrapper<VeOaCarInfoEntity>wrapper=new QueryWrapper<>();
        wrapper.eq("car_name", carName.trim());
        return iVeOaCarInfoMapper.selectOne(wrapper);
    }


    @Override
    //修改维护表
    public int setWeihu(VeOaCarWeihuEntity veOaCarWeihuEntity) {
        int num = iVeOaCarWeiHuMapper.updateById(veOaCarWeihuEntity);
        return num;
    }

    @Override
    //高级搜索
    public HashMap<String, Object> advancedQuery(String advancedQuery) {
        List<VeOaCarWeihuEntity> veOaCarWeihuEntityList = iVeOaCarWeiHuMapper.advancedQuery(advancedQuery);
        Integer count = iVeOaCarWeiHuMapper.advancedQueryCount(advancedQuery);
        HashMap<String,Object>map = new HashMap<>();
        // 把查出来的东西存到map里面去
        map.put("list",veOaCarWeihuEntityList);
        map.put("count",count);
        return map;
    }
}
